What is any-observable?
The any-observable package allows you to register an Observable library of your choice and use it throughout your application as a singleton. This means you can use Observables without being locked into a specific library, providing flexibility in your codebase.
What are any-observable's main functionalities?
Registering a specific Observable implementation
This feature allows you to register an Observable implementation that will be used whenever you import 'any-observable'.
const anyObservable = require('any-observable');
anyObservable.register('rxjs'); // or 'zen-observable', etc.
Using the registered Observable
Once an Observable library is registered, you can create and use Observables as you would normally with that library.
const Observable = require('any-observable');
const stream = new Observable(observer => {
observer.next('Hello, World!');
observer.complete();
});
stream.subscribe({
next: console.log,
complete: () => console.log('Stream finished')
});
Other packages similar to any-observable
rxjs
RxJS is a library for reactive programming using Observables. It provides more functionality out of the box compared to any-observable, which is a wrapper to use any Observable implementation.
zen-observable
Zen Observable is a minimalistic library for Observables. It is smaller and has fewer features than RxJS, but can be used with any-observable to provide a consistent Observable interface.
observable-fns
Observable-fns is a lightweight Observable library that focuses on core functionality. It is similar to zen-observable and can also be used with any-observable.
any-observable
Support any Observable library and polyfill
Like any-promise
. (Docs are lacking here, so refer to those docs for now)
Install
$ npm install --save any-observable
You must also install the Observable library you want:
$ npm install --save zen-observable
Usage
const Observable = require('any-observable');
Observable.of(1, 2).forEach(x => console.log(x));
Registration Shortcuts
This adds the following shortcut registrations:
rxjs-min
: Bare bones RxJs Observable implementation. See the RxJs Installation Instructions for details on patching additional methods into that implementation.rxjs
: Same as rxjs-min
, but adds the somewhat standard Observable.of
and Observable.from
.rxjs-all
: The kitchen sink approach to Observables.zen
: The zen-observable
implementation.
Shortcut registration can be done as follows:
import 'any-observable/register/zen';
It's especially handy for more recent versions of Node.js (and many test runners), that offer a --require
flag:
$ ava --require=any-observable/register/zen test.js
Related
License
MIT © Sindre Sorhus